O'Neil debuteerde op 29 januari 2000 in het shirt van Portsmouth als 16-jarige tiener tegen Barnsley. In 2003 en 2004 werd hij uitgeleend aan Walsall en het WelsheCardiff City. In acht seizoenen speelde hij 174 competitiewedstrijden voor Pompey, waarin hij in totaal 16 doelpunten scoorde. Op 31 augustus 2007 werd hij voor 7,5 miljoen euro verkocht aan Middlesbrough. In vier seizoenen scoorde hij acht doelpunten in 109 competitiewedstrijden voor Boro. Op 25 januari 2011 tekende hij een tweeëneenhalfjarig contract bij West Ham United. Op 27 januari 2011 debuteerde hij voor The Hammers in de League Cup tegen Birmingham City als invaller voor de PortugeesLuís Boa Morte. Op 6 februari 2011 maakte hij zijn competitiedebuut voor zijn nieuwe club opnieuw tegen Birmingham City. In zijn eerste seizoen degradeerde de club uit de Premier League, om na één seizoen weer te promoveren.